Excel 中使用vba对任意指定区域截屏保存为本地文件 您所在的位置:网站首页 ios如何截屏截长图 另存为图片 Excel 中使用vba对任意指定区域截屏保存为本地文件

Excel 中使用vba对任意指定区域截屏保存为本地文件

2024-07-11 10:35| 来源: 网络整理| 查看: 265

vba实现Excel表格指定区域截屏并保存为本地文件 Exce中长表格区域截屏需求解决方案vba实现长区域截屏解释

Exce中长表格区域截屏需求

Excel是否可以实现屏幕任意区域截图?虽然目前市面上已经有很多截图软件了,并且微信、QQ等也都提供了截图功能,而且十分方便好用。但是我目前在工作中经常需要对excel表格指定区域进行截图,在使用上述软件进行截图的时候经常遇到截图不精确的问题,就需要重新截取;另外就是excel表格长度过长,超过了屏幕长度,需要滚动截屏,这样让边界的选取更加困难。

通过检索发现了网上有借助PowerShell可实现任意区域截图功能。但是我作为一个深度vba使用者,还是喜欢使用vba来解决这个问题。

解决方案 vba实现长区域截屏

以下是我的代码实现

' 定义一个名为SaveRangeAsPNG的宏,用于将指定范围的单元格区域保存为PNG图片 Sub SaveRangeAsPNG() ' 选择工作表中的B2到G60单元格区域 ActiveSheet.Range("B2:G60").Select ' 复制所选区域为图片 Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture ' 在工作表中粘贴复制的图片 ActiveSheet.Pictures.Paste.Select ' 使用With语句来操作粘贴的图片对象 With Selection ' 复制粘贴的图片,以便后续操作 .Copy ' 添加一个图表对象,其大小与复制的图片相同 With ActiveSheet.ChartObjects.Add(0, 0, Selection.Width, Selection.Height).Chart ' 设置一个计时器,用于稍后粘贴图片 t = Timer ' 循环直到计时器超过设定的时间(这里设置为1秒) While Timer < t + 1 DoEvents ' 允许其他事件在循环中发生 Wend ' 选择新添加的图表对象,咱也不知道为什么,但是没有这一句整个功能就容易截到白屏 .Parent.Select ' 粘贴之前复制的图片到图表对象中 .Paste ' 导出图表为PNG图片,保存在工作簿所在的文件夹下,文件名为工作表的名称 .Export ThisWorkbook.Path & "\" & ActiveSheet.Name & ".png" ' 删除图表对象,因为它不再需要 .Parent.Delete End With ' 删除粘贴的图片,因为它已经保存为图片文件 .Delete End With End Sub 解释

代码主要是考虑了截图区域超出屏幕分辨率的细节问题,大家可以自行完善。 请重点注意这一句: ’ 选择工作表中的B2到G60单元格区域 ActiveSheet.Range(“B2:G60”).Select,当你需要截取不同区域的时候,就修改"B2:G60"为你选定的矩形区域即可。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有